//
//  PopoverPresentationController.swift
//  HJWeibo
//
//  Created by huangjiong on 16/2/1.
//  Copyright © 2016年 huangjiong. All rights reserved.
//
 /// 这个类,是专门用于来协助控制器present,是iOS8之后才有的,所以需要加上这句:@available(iOS 8.0, *)

import UIKit

@available(iOS 8.0, *)
class PopoverPresentationController: UIPresentationController {
    
    //定义一个属性,用于接收外界传过来的frame,弹出视图的大小
    var presentFrame: CGRect = CGRectZero

    
    //一.必须重写这个方法,只需要完成父类的实现即可,无须其他操作
    //presentedViewController : 要展现的控制器
    //presentingViewController : 发起转场的控制器,Xcode6中是nil,Xcode7是野指针
    override init(presentedViewController: UIViewController, presentingViewController: UIViewController) {
        
        //完成父类实现
        super.init(presentedViewController: presentedViewController, presentingViewController: presentingViewController)
    }
    
    //二.即将对要展现的控制器view进行布局时,会回调这个方法
    //我们可以在这个方法中,对即将要展现的控制器view进行一些操作
    override func containerViewWillLayoutSubviews() {
        //对将要展现的控制器view改成我们想要的尺寸
        //通过方法presentedView()获取
        
        if presentFrame == CGRectZero
        {
            presentedView()?.frame = CGRectZero
        }
        else
        {
            presentedView()?.frame = presentFrame

        }
        
        //把用于遮挡的view添加
        containerView?.insertSubview(coverView, atIndex: 0)
    }
    
    //MARK: - 懒加载一个属性,用于遮挡原来控制器的view
    private lazy var coverView: UIView = {
        
        let view = UIView()
        view.backgroundColor = UIColor(white: 0.0, alpha: 0.2)
        view.frame = UIScreen.mainScreen().bounds
        
        //添加点击手势
        let tap = UITapGestureRecognizer(target: self, action: "tapGestureHandler")
        view.addGestureRecognizer(tap)
        
        return view
    }()
    
    //点击返回
    func tapGestureHandler()
    {
        //先拿到当前展现的控制器
        presentedViewController.dismissViewControllerAnimated(true, completion: nil)
    }
}
